from redis import StrictRedis
import logging


# 创建项目配置类
class Config(object):
    """项目配置类"""
    # 开启debug模式

    DEBUG = True

    # mysql数据库的配置信息
    SQLALCHEMY_DATABASE_URI = "mysql://root:mysql@127.0.0.1:3306/info_flask"
    # 开启数据库跟踪
    SQLALCHEMY_TRACK_MODIFICATIONS = True

    # redis数据库的配置信息
    REDIS_HOST = '127.0.0.1'
    REDIS_PORT = 6379
    REDIS_NUM = 7

    # 设置session配置
    SECRET_KEY = "CuSSMSeo9vhuUkZXhVogyure4EfbLrJUaAQP49tePzbY9RQXxB21G3EoIcU9+uQ6"

    # 调整session存储到redis的配置信息
    # 设置存储session的数据库类型
    SESSION_TYPE = 'redis'
    # 创建数据库实例对象给配置
    SESSION_REDIS = StrictRedis(host=REDIS_HOST, port=REDIS_PORT,db=REDIS_NUM)
    # session数据需要加密处理
    SESSION_USE_SIGNER = True
    # session设置有过期时长的
    SESSION_PERMANENT=False
    # 设置过期时长(默认配置在app.py文件下219行
    """
    #: ``timedelta(days=31)``
    permanent_session_lifetime = ConfigAttribute('PERMANENT_SESSION_LIFETIME',
        get_converter=_make_timedelta)
    """
    PERMANENT_SESSION_LIFETIME = 86400 * 2


class DevelopmentConfig(Config):
    """开发模式的配置"""
    # 开启debug模式
    DEBUG = True
    # 设置开发环境日志级别
    LOG_LEVEL = logging.DEBUG


class ProductionConfig(Config):
    """线上模式的配置"""
    # 上线之后关闭debug模式
    DEBUG = False
    # 设置线上模式的日志级别
    LOG_LEVEL = logging.WARNING
    # mysql数据库的配置信息
    # SQLALCHEMY_DATABASE_URI = "mysql://root:mysql@服务器的ip:3306/info_flask


# 提供一个接口给外界调用
# 用法：config_dict["development'] ---> DevelopmentConfig
config_dict = {
    "development":DevelopmentConfig,
    "production":ProductionConfig
}